Next:
Scenario
, Previous:
shared_ptr is not Null Object
, Up:
Index
Null Object
BankAccount
::
BankAccount
(
const
shared_ptr
<
Logger
>&
logger
,
const
string
&
name
,
int
balance
)
;
위의 생성자는 인자로 Logger 객체를 전달받는다.
초기화 되지 않은 shared_ptr<Logger>()를 전달하는 방법은 안전하지 못한 방법이다.
(BankAccount가 내부적으로 Logger를 사용하기 전에 포인터 검사를 하는지 알 수 없음)
Logger에 Null 객체를 전달해서 객체가 가진 인터페이스를 모두 준수하면서,
동작을 하지 않도록 구현한다.
struct
NullLogger
:
Logger
{
void
info
(
const
string
&
s
)
override
{
}
void
warn
(
const
string
&
s
)
override
{
}
}